package com.zp.self.module.level_4_算法练习.数据结构.数组;

import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_717_1比特与2比特字符 {
    @Test
    public void main() {
        System.out.println(isOneBitCharacter(new int[]{1,1,0}));
    }

    /**
    题目：有两种特殊字符：
     第一种字符可以用一比特 0 表示
     第二种字符可以用两比特（10 或 11）表示
     给你一个以 0 结尾的二进制数组 bits ，如果最后一个字符必须是一个一比特字符，则返回 true 。

     示例 1:
     输入: bits = [1, 0, 0]
     输出: true
     解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。
     所以最后一个字符是一比特字符。

     示例 2:
     输入：bits = [1,1,1,0]
     输出：false
     解释：唯一的解码方式是将其解析为两比特字符和两比特字符。
     所以最后一个字符不是一比特字符。

    分析：【P 💜💜】
       1.遍历：从前向后，遇到1时：记录二位的下标位置，最后判断two的位置是否是末尾即可
                --执行用时：0 ms, 在所有 Java 提交中击败了100.00%的用户

    边界值 & 注意点：
       1.
     **/
    public boolean isOneBitCharacter(int[] bits) {
        if(bits.length==1 || bits[bits.length-2]==0 ) return true;
        int two =0;
        for (int i = 0; i < bits.length; i++) {
            if(bits[i]==1)
                two=++i;
        }
        return two!=bits.length-1;
    }
}
